<?php

namespace com\aristo\ingenieros\model;

include 'com/aristo/ingenieros/view/NoteView.php';

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

use com\aristo\ingenieros\view\NoteView;
use com\aristo\ingenieros\view\EntityView;
use \mysqli;

/**
 * Description of NoteQuery
 *
 * @author FAMILIA
 */
class NoteQuery {

    public static function getNotas($termino, mysqli $con) {
        try {
            $termino = utf8_encode($termino);

            $sql = "SELECT
                        n.idnotacontable,
                        c.codigo,
                        c.descripcion,
                        tn.descripcion,
                        n.monto,
                        n.fecha
                    FROM
                        notacontable AS n
                        INNER JOIN cuenta AS c ON n.cuenta_id = c.idcuenta
                        INNER JOIN tiponota AS tn ON n.tiponota_id = tn.idtiponota
                    WHERE
                        n.eliminado = 'NO'";

            //$con->autocommit(FALSE);

            $query = $con->query($sql);

            if ($query) {
                if ($query->num_rows > 0) {
                    $notas = array();
                    while ($row = $query->fetch_row()) {
                        $id = utf8_decode($row[0]);
                        $codigo = utf8_decode($row[1]);
                        $descripcion = utf8_decode($row[2]);
                        $tipo = utf8_decode($row[3]);
                        $monto = utf8_decode($row[4]);
                        $fecha = utf8_decode($row[5]);

                        $nota = new NoteView();
                        $nota->setId($id);
                        $nota->setCodigo($codigo);
                        $nota->setDescripcion($descripcion);
                        $nota->setTipo($tipo);
                        ($tipo == "CREDITO")?$nota->setCredito($monto):$nota->setDebito($monto);
                        $nota->setFecha($fecha);
                        $notas [] = $nota->toJSON();
                    }
                    return $notas;
                } else {
                    return "NO EXISTE NOTAS CONFIGURADAS";
                }
            } else {
                return "ERROR DE RED. <br/><br/>Codigo: " . $con->errno . "<br/>" . nl2br($con->error);
            }
        } catch (Exception $exc) {
            return 'ERROR EN EL MODELO DE NOTAS: ' . $exc->getMessage() . "<br/>" . nl2br($exc->getTraceAsString());
        }
    }

    public static function addNota($tipo, $idcuenta, $monto, $fecha, mysqli $con) {
        try {
            $tipo = utf8_encode($tipo);
            $idcuenta = utf8_encode($idcuenta);
            $monto = utf8_encode($monto);
            $fecha = utf8_encode($fecha);

            $sqlBuscaTipoNota = "SELECT tn.idtiponota FROM tiponota AS tn WHERE tn.descripcion = '" . $tipo . "'";

            $con->autocommit(FALSE);

            $search = $con->query($sqlBuscaTipoNota);

            if ($search) {
                $idTipo = "0";
                while ($row = $search->fetch_row()) {
                    $idTipo = utf8_decode($row[0]);
                }
                if ($idTipo != "0") {
                    $sql = "INSERT INTO notacontable (monto, fecha, cuenta_id, tiponota_id) VALUES ('" . $monto . "','" . $fecha . "'," . $idcuenta . "," . $idTipo . ")";

                    $query = $con->query($sql);

                    if ($query) {
                        $rpta = new EntityView();
                        $rpta->setResponse("SUCCESS");
                        $rpta->setDescripcion("AGREGADO CORRECTAMENTE");
                        return $rpta->toJSON();
                    } else {
                        return "ERROR DE RED.<br/><br/>Codigo: " . $con->errno . "<br/>" . nl2br($con->error);
                    }
                } else {
                    return "ERROR DE CONFIGURACION DE TIPOS DE NOTAS.<br/><br/>Codigo: " . $con->errno . "<br/>" . nl2br($con->error);
                }
            } else {
                return "ERROR DE RED.<br/><br/>Codigo: " . $con->errno . "<br/>" . nl2br($con->error);
            }
        } catch (Exception $exc) {
            return 'ERROR EN EL MODELO DE NOTAS: ' . $exc->getMessage() . "<br/>" . nl2br($exc->getTraceAsString());
        }
    }
    
    public static function deleteNota($id, mysqli $con) {
        try {
            $id = utf8_encode($id);

            $sqlnota = "UPDATE notacontable SET eliminado = 'SI' WHERE idnotacontable = " . $id;
            $delete = $con->query($sqlnota);
            //echo var_dump($deletePersona).$sql_detpersona;
            if ($delete) {
                $rpta = new EntityView();
                $rpta->setResponse("SUCCESS");
                $rpta->setDescripcion("ELIMINADO CORRECTAMENTE");
                return $rpta->toJSON();
            } else {
                return "ERROR DE RED.<br/><br/>Codigo: " . $con->errno . "<br/>" . nl2br($con->error);
            }
        } catch (Exception $exc) {
            return 'ERROR EN EL MODELO DE NOTAS: ' . $exc->getMessage() . "<br/>" . nl2br($exc->getTraceAsString());
        }
    }

}